package com.asset.mapper;

import com.asset.pojo.Role;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * @author 11725
 */
public interface RoleMapper extends Mapper<Role> {
    /**
     * 根据用户 id 进行关联查询，获取角色列表
     * @param userId    用户 id
     * @return          角色列表
     */
    @Select("SELECT r.role_id as id, r.role_name as name, r.role_detail as detail FROM tab_user_role ur, tab_role r WHERE ur.role_id = r.role_id AND ur.user_id = #{userId}")
    List<Role> selectByUserId(@Param("userId") Long userId);

    /**
     * 根据用户 id 删除关联的角色信息
     * @param userId    用户 id
     * @return          受影响行数
     */
    @Delete("DELETE FROM tab_user_role WHERE user_id = #{userId}")
    int deleteByUid(@Param("userId") Long userId);

    /**
     * 关联用户、角色信息
     * @param userId    用户 id
     * @param roleId    角色 id
     * @return          受影响行数
     */
    @Insert("INSERT INTO tab_user_role (user_id, role_id) VALUES (#{userId}, #{roleId})")
    int insertForUser(@Param("userId") Long userId, @Param("roleId") Long roleId);
}
